package com.tgy.algorithm._经典题目01;

/**
 * 给出一组正整数arr，你从第0个数向最后一个数每个数的值表示你从这个位置可以向右跳跃的最大长度
 * 计算如何以最少的跳跃次数跳到最后一个数。
 */
public class _033_跳跃 {

    public static int minStep(int[] nums) {

        if (nums == null || nums.length == 0) {
            return 0;
        }

//        int step = 1;
//        int cur = nums[0];
//        int next = -1;
//
//        int len = nums.length;
//        for (int i = 1; i < len; i++) {
//             if (i <= cur) {
//                 // 还在当前步
//                 next = Math.max(i+nums[i],next);
//             }else {
//                 System.out.println(i + ":" +nums[i]);
//                 step++;
//                 cur = next;
//                 next = Math.max(i+nums[i],next);
//             }
//        }

        int step = 0;
        int cur = 0;
        int next = -1;

        int len = nums.length;
        for (int i = 0; i < len; i++) {
//            if (i <= cur) {
//                // 还在当前步
//                next = Math.max(i+nums[i],next);
//            }else {
//                System.out.println(i + ":" +nums[i]);
//                step++;
//                cur = next;
//                next = Math.max(i+nums[i],next);
//            }
            if( i > cur) {
                System.out.println(i + ":" + nums[i]);
                step++;
                cur = next;
            }
            next = Math.max(next,nums[i] + i);
        }

        return step;
    }

    public static void main(String[] args) {

//        int[] nums = {3,1,2,6,2,1,1,2,3,1,1};
        int[] nums = {3, 2, 3, 1, 1, 4};
        int minStep = minStep(nums);
        System.out.println(minStep);
    }
}
